1. Field of the Invention
This invention relates to computer circuitry and, more particularly, to apparatus and a method for trapping unimplemented operations in input/output devices which include first-in first-out (FIFO) buffers.
2. History of the Prior Art
Modern computer system are typically based on an architecture which was first offered in the Digital Equipment Corporation (DEC) PDP11 computer. One problem with this architecture as with earlier IBM and CDC mainframe architectures is that writing directly to the input/output devices of the system by an application program is prohibited. Although this architecture allows all of the facilities of the central processing unit to be used for input/output, it requires that the operating system running on the central processing unit attend to all of the input/output functions using trusted code. This significantly slows any input/output operation of the computer.
In contrast to earlier mainframe systems, in this architecture there is no process by which the input/output performance of the system can be increased except by increasing the speed of the central processing unit or the input/output bus. This is an especial problem for programs which make heavy use of input output/devices such as video and game programs which manipulate graphics and high quality sound extensively.
In a modern computer, the central processing unit and the input/output devices operate at different speeds. It can be very inefficient for a modern central processing unit to wait until an input/output write operation is complete before performing the next operation which often has nothing to do with input/output. On the other hand, a central processing unit has to wait for the result of a read operation because it needs the result produced.
Since most central processing unit accesses to input/output devices are write operations, the designers of systems and input/output devices attempt to decouple the central processing unit and input/output devices as far as write operations are concerned by implementing write queues using first-in first-out (FIFO) write buffers. These buffers may appear at various places in a particular implementation: as a part of the central processing unit, as part of a bridge chip, or as part of an input/output device.
A new input/output architecture has now been invented which overcomes the problems of the prior art PDP11 architecture and allows application programs to write directly to input/output devices. This architecture uses FIFO buffers at the input of an input/output control unit to allow the central processing unit and the input/output devices to be decoupled in order to increase the speed of operation. One problem raised in this new architecture is that an input/output device and the buffers supplying it must accept all information written to them over the input/output bus in order to implement the architecture. Individual input/output devices may not implement many of the commands in hardware. Some of the operations commanded may be implemented in software while other of these operations commanded may have been generated in error.
It is desirable to provide a means for handing unimplemented operations in input/output devices which include first-in first-out (FIFO) buffers.